#ifndef LIB_AX_SOLVER_FACTORY_H
#define LIB_AX_SOLVER_FACTORY_H
#include "libAcoustX/solver/bhp/BHPSolver.h"
#include "libAcoustX/solver/usml/USMLSolver.h"

namespace ax {
namespace solve {
enum class SolveType { ST_BHP, ST_USML };
class AX_EXPORT Factory
{
public:
	using sptr = std::shared_ptr<Factory>;
	using csptr = std::shared_ptr<const Factory>;

	Factory();
	virtual ~Factory();

	ax::bhp::Solver::sptr createBhpSolver() const;
	ax::usml::Solver::sptr createUSMLSolver() const;
	solve::Base::sptr createSolver(SolveType type) const;

protected:

private:

};

} // namespace solve
} // namespace ax

#endif // !LIB_AX_SOLVER_FACTORY_H
